package org.jwd.start.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author vizz
 * @since 2022/5/14 16:16
 * <p>
 * ImportSelector 可以将字符串表示的全限定名加上@Configuration注解，实现动态加载配置
 * ImportSelector 执行在bean实例化之前，所以这里的@Value不可用,但是可由EnvironmentAware接口来获得配置文件
 * 这个接口本身也不能成为bean
 *
 * 这个类已经废弃了，也没有@Import，所以不会在springboot中
 * 但是这一波设计确实很好，只是没用上，后面如果再用到了在copy这里
 */
@Slf4j
@Deprecated
public class StorageSelector implements ImportSelector, EnvironmentAware {

    private Environment environment;

    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        String storageName = environment.getProperty("sprout.storage.name");
        String storageConfig = environment.getProperty("sprout.storage.config");//"org.jwd.storage.mb3.config.Mybatis3Config"
        log.info("storage 模块配置成功，当前采用的数据库框架名为 {}，配置类为{}", storageName, storageConfig);
        return new String[]{
//                storageConfig
        };
    }

    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
}
